package com.corpgovernment.common.enums;

import com.google.common.collect.Lists;

import java.util.ArrayList;
import java.util.List;

/**
 * @author sbwu
 * 舱等枚举
 */
public enum ClazzEnum {
    /**
     * 经济舱
     */
    Y("Y", "经济舱"),
    /**
     * 头等舱
     */
    F("F", "头等舱"),
    /**
     * 公务舱
     */
    C("C", "公务舱");

    private String code;

    private String name;

    ClazzEnum(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public String getCode() {
        return code;
    }

    public String getName() {
        return name;
    }

    /**
     * 根据code转换枚举
     */
    public static ClazzEnum getEnumByCode(String code) {
        ClazzEnum result = null;
        for (ClazzEnum item : ClazzEnum.values()) {
            if (item.getCode().equalsIgnoreCase(code)) {
                result = item;
                break;
            }
        }
        return result;
    }

    public static List<String> getAllCodes(){
        List<String> result = Lists.newArrayList();
        for (ClazzEnum item : ClazzEnum.values()) {
            result.add(item.getCode());
        }
        return result;
    }

	/**
	 * 获取<=传入code舱等的枚举
	 * @return
	 */
	public static List<ClazzEnum> getLowerClazzEnumThanCode(String code){
		List<ClazzEnum> clazzEnums = new ArrayList<>();
		if (ClazzEnum.Y.getCode().equals(code)){
			clazzEnums.add(ClazzEnum.Y);
		}
		else if (ClazzEnum.C.getCode().equals(code)){
			clazzEnums.add(ClazzEnum.Y);
			clazzEnums.add(ClazzEnum.C);
		}
		else if (ClazzEnum.F.getCode().equals(code)){
			clazzEnums.add(ClazzEnum.Y);
			clazzEnums.add(ClazzEnum.C);
			clazzEnums.add(ClazzEnum.F);
		}
		return clazzEnums;
	}
}
